Question 1 
Create a task type Task_Id_T which will provide a unique Positive value to each caller of the entry Create_Id.

Question 2 
Create a task type Containers_T with a discriminant Size of type Container_Range_T with the default value Default_Container_Size
The task type Containers_T accepts 2 entries:
       - Add taking one parameter Quantity of type Integer 
       - Remove without parameter
The container starts empty 
The Add entry will add the Quantity to the existing quantity stored in the container
The Remove entry will decrease by 1 the quantity stored 
A message should be displayed with the Container task Id on each operation
If the container cannot handle the requested quantity then an overflow message is displayed
If the container is empty when Remove is called then a message is displayed

Question 3

Create a task type Filler_T with one entry Start taking 2 parameters : 
Period of type Duration and Container of type Container_Access_T
Filler_T is a cyclic task calling the Add entry of the Container
received in parameter with the given period.
The loop must be implemented with a non drifting mechanism (delay until)
The quantity added to the container is a random number between 0.0 and 10.0
   
Question 4 
Create a task type Remover_T with one entry Start taking 2 parameters : 
Period of type Duration and Container of type Container_Access_T
Remover_T is a cyclic task calling the Remove entry of the Container received in parameter with the given period.
The loop must be implemented with a non drifting mechanism (delay until)

Question 5

1-
Create a task type Overflow_Manager_T with 2 entries:
  - a Start entry taking one Container parameter of type Container_Access_T
  - a Add entry taking a parameter Quantity of type Integer
This task will sum the quantity received and display the total
It will also instanciate removers associated with the container received in parameter

2-
Update the Container_T task so that it instanciate an Overflow_Manager_T task asociated with the container.
When the container is full it should redirect its Add requests to the overflow manager.

3-
Add a Stop entry to Filler_T task type - When the stop entry is called the task should exit cleanly.

4- 
Add a 5 seconds timeout to Remover_T task type after which the task should terminate cleanly
Add


5-
Stop the Filler task after few seconds if possible after having reached the overflow point. The program should exit cleanly after few more seconds 

